from __future__ import division
import urllib,ast

def datoselophantgame(accountid,server,key,championid):
##    Funcion que devuelve elo y estadisticas del campeon indicado. Info obtenida utilizando la API de elophant.com
##    Server puede ser [euw,na,eune]  mas?
##    Devuelve info como diccionario con los campos: "elosolo5v5","elosolo5v5season2","statscampeon","statscampeonseason2"
##    Y "statscampeon" es otro diccionario con los campos: "jugadas","victorias","avgkills","avgdeaths","avgassists"
##    Devuelve campos=0 si nunca ha jugado ese campeon o si no jugo esa temporada.
##    
    try:

#################################################################################################33
            ####  PRIMERO DATOS DE LA S3
            ####
            
##        key="Z1TMfh3wAFvk4cRejiXn"
        season="CURRENT"

####        Obtengo y genero diccionario de conversion numeros-campeones
##        filehandle4 = urllib.urlopen('http://elophant.com/api/v1/champions?key={0}'.format(key))
##        var4=filehandle4.read()
##        ##if "true" in var4:
##        ##    var3=var3.replace('true','1')
##        dicconversion=ast.literal_eval(var4)
##        filehandle4.close()
##        dicconversion2={}
##        for i in range(len(dicconversion)-1):
##            i=i+1
##            dicconversion2['{0}'.format(dicconversion[i]['id'])]='{0}'.format(dicconversion[i]['name'])

        
##        Ahora uso API para ver elo segun temporada
        filehandle2 = urllib.urlopen('http://elophant.com/api/v1/{0}/getPlayerStats?accountId={1}&season={2}&key={3}'.format(server,accountid,season,key))
        var2=filehandle2.read()
        if "true" in var2:
            var2=var2.replace('true','1')
        if "false" in var2:
            var2=var2.replace('false','0')
        dicelo=ast.literal_eval(var2)
        filehandle2.close()
        for k in range(len(dicelo["playerStatSummaries"]['playerStatSummarySet'])):
            if dicelo["playerStatSummaries"]['playerStatSummarySet'][k]['playerStatSummaryTypeString']=="RankedSolo5x5":
                maxelosolo5v5=dicelo["playerStatSummaries"]['playerStatSummarySet'][k]['maxRating']
                break
            elif k==(len(dicelo["playerStatSummaries"]['playerStatSummarySet'])-1):
                maxelosolo5v5=0


##        Ahora uso API para ver todos campeones segun temporada
        filehandle3 = urllib.urlopen('http://elophant.com/api/v1/{0}/getRankedStats?accountId={1}&season={2}&key={3}'.format(server,accountid,season,key))
        var3=filehandle3.read()
        if "true" in var3:
            var3=var3.replace('true','1')
        if "false" in var3:
            var3=var3.replace('false','0')
        diccampeones=ast.literal_eval(var3)
        filehandle3.close()
##        Compruebo que no se devuelva vector vacio
        if diccampeones==[]:
            campeon={"jugadas":0,"victorias":0,"avgkills":0,"avgdeaths":0,"avgassists":0}
        else:
    ##      Ahora busco el campeon y guardo sus stats
            tamano=len(diccampeones)
            for i in range(tamano):
                if diccampeones[i]['ChampionId']==championid:
                    indice=i
                    break
            try:
                campeon={"jugadas":diccampeones[indice]['GamesPlayed'],"victorias":int(round(diccampeones[indice]['Wins']/diccampeones[indice]['GamesPlayed']*100)),"avgkills":round(diccampeones[indice]['Kills']*10/diccampeones[indice]['GamesPlayed'])/10,"avgdeaths":round(diccampeones[indice]['Deaths']*10/diccampeones[indice]['GamesPlayed'])/10,"avgassists":round(diccampeones[indice]['Assists']*10/diccampeones[indice]['GamesPlayed'])/10}
            except:
                campeon={"jugadas":0,"victorias":0,"avgkills":0,"avgdeaths":0,"avgassists":0}

            
##########################################################################################################3
            ####  AHORA DATOS DE LA S2
            ####
            
##        key="Z1TMfh3wAFvk4cRejiXn"
        season="TWO"

        
##        Ahora uso API para ver elo segun temporada
        filehandle2 = urllib.urlopen('http://elophant.com/api/v1/{0}/getPlayerStats?accountId={1}&season={2}&key={3}'.format(server,accountid,season,key))
        var2=filehandle2.read()
        if "true" in var2:
            var2=var2.replace('true','1')
        if "false" in var2:
            var2=var2.replace('false','0')
        dicelo2=ast.literal_eval(var2)
        filehandle2.close()
        for k in range(len(dicelo2["playerStatSummaries"]['playerStatSummarySet'])):
            if dicelo2["playerStatSummaries"]['playerStatSummarySet'][k]['playerStatSummaryTypeString']=="RankedSolo5x5":
                maxelosolo5v52=dicelo2["playerStatSummaries"]['playerStatSummarySet'][k]['maxRating']
                break
            elif k==(len(dicelo2["playerStatSummaries"]['playerStatSummarySet'])-1):
                maxelosolo5v52=0


##        Ahora uso API para ver todos campeones segun temporada
        filehandle3 = urllib.urlopen('http://elophant.com/api/v1/{0}/getRankedStats?accountId={1}&season={2}&key={3}'.format(server,accountid,season,key))
        var3=filehandle3.read()
        if "true" in var3:
            var3=var3.replace('true','1')
        if "false" in var3:
            var3=var3.replace('false','0')
        diccampeones2=ast.literal_eval(var3)
        filehandle3.close()
##        Compruebo que no se devuelva vector vacio
        if diccampeones2==[]:
            campeon2={"jugadas":0,"victorias":0,"avgkills":0,"avgdeaths":0,"avgassists":0}
        else:
    ##      Ahora busco el campeon y guardo sus stats
            tamano=len(diccampeones2)
            for i in range(tamano):
                if diccampeones2[i]['ChampionId']==championid:
                    indice2=i
                    break
            try:
                campeon2={"jugadas":diccampeones2[indice2]['GamesPlayed'],"victorias":int(round(diccampeones2[indice2]['Wins']/diccampeones2[indice2]['GamesPlayed']*100)),"avgkills":round(diccampeones2[indice2]['Kills']*10/diccampeones2[indice2]['GamesPlayed'])/10,"avgdeaths":round(diccampeones2[indice2]['Deaths']*10/diccampeones2[indice2]['GamesPlayed'])/10,"avgassists":round(diccampeones2[indice2]['Assists']*10/diccampeones2[indice2]['GamesPlayed'])/10}
            except:
                campeon2={"jugadas":0,"victorias":0,"avgkills":0,"avgdeaths":0,"avgassists":0}

        datos={"elosolo5v5":maxelosolo5v5,"elosolo5v5season2":maxelosolo5v52,"statscampeon":campeon,"statscampeonseason2":campeon2}
        
        return datos

    except:
        return 0
##        pass
